package concoursbelote;

import java.util.Random;

/**
 * 
 * @author Guillaume
 *
 */
public class ClientHomme extends Client 
{
	
	//*********************************************************
	//			ATTRIBUTS
	//*********************************************************
	private String couleurTeeShirt;
	private boolean arreteDeBoire;
	
	
	//*********************************************************
	//			CONSTRUCTEURS
	//*********************************************************
	
	/**
	 * Transforme un Client en Client Homme 
	 * @author Guillaume
	 * @param prenom
	 * @param surnom
	 * @param porteMonnaie
	 * @param coteDePopularite
	 * @param criSignificatif
	 * @param boissonFavorite
	 * @param boissonFavoriteSecours
	 * @param degreAlcoolemie
	 * @param degreSagesse
	 * @param degreConsommation
                   * @param jourBanissement 
	 * @param couleurTeeShirt
	 * @param arreteDeBoire
	 */
	public ClientHomme(String prenom, String surnom, double porteMonnaie, double coteDePopularite, String criSignificatif,
			String boissonFavorite, String boissonFavoriteSecours, double degreAlcoolemie, int degreConsommation, int jourBanissement, String couleurTeeShirt, boolean arreteDeBoire) 
	{
		super(prenom, surnom, porteMonnaie, coteDePopularite, criSignificatif, boissonFavorite, boissonFavoriteSecours, degreAlcoolemie, degreConsommation, jourBanissement);
		this.couleurTeeShirt = couleurTeeShirt;
		this.arreteDeBoire = arreteDeBoire;
	}
	
	
	//*********************************************************
	//			GETTEURS
	//*********************************************************
	public String getCouleurTeeShirt() 
	{
		return couleurTeeShirt;
	}
	public boolean isArreteDeBoire() 
	{
		return arreteDeBoire;
	}
	
	//*********************************************************
	//			SETTEURS
	//*********************************************************
	public void setArreteDeBoire(boolean arreteDeBoire) 
	{
		this.arreteDeBoire = arreteDeBoire;
	}

	//*********************************************************
	//			METHODS
	//*********************************************************
	
	@Override
	public void refuserUnVerre(int index) 
	{

	}
	
	/**
	 * le client dis une phrase pour vérifier que on as vu son tee_shirt
	 * @author Guillaume
	 * @param indexClient
	 */
	public void montreSonTeeShirt(int indexClient)
	{
		System.out.println("<" + Administration.currentBar.clients.get(indexClient).getPrenom() + "> Vous avez vu mon tee-shirt " + ((ClientHomme)Administration.currentBar.clients.get(indexClient)).getCouleurTeeShirt() + "?\nIl est beau non?");
	}
	
	/**
	 * Si la serveuse possède un coefficients de charme suffisamenet élevé, le client va commencer à la draguer
	 * @author Guillaume
	 * @param indexClient
	 * @param indexServeur
	 * @param indexBoisson
	 */
	public void draguer(int indexClient, int indexServeur, int indexBoisson)
	{
		Random rnd = new Random();
		Integer choixDrague = new Integer(rnd.nextInt(2));
		((ClientHomme)Administration.currentBar.clients.get(indexClient)).montreSonTeeShirt(indexClient);
		switch(choixDrague)
		{
			case 0:
				System.out.println("<" + Administration.currentBar.clients.get(indexClient).getPrenom() + "> Vous prenez " + Administration.currentBar.mesBoissons.get(indexBoisson).getEcriture() + " " + Administration.currentBar.mesBoissons.get(indexBoisson).getNomBoisson() + " avec moi???");
				if(Administration.currentBar.clients.get(indexClient).getCoteDePopularite() < 25)
				{
					System.out.println("<" + Administration.currentBar.serveur.get(indexServeur).getPrenom() + "> Je suis désolé, je dois refuser");
				}
				else if(Administration.currentBar.clients.get(indexClient).getCoteDePopularite() >= 25)
				{
					((ServeurFemme) Administration.currentBar.serveur.get(indexServeur)).refuserUnVerre(indexServeur);
					System.out.println("<" + Administration.currentBar.clients.get(indexClient).getPrenom() + "> Prenez de l'eau alors. Et ajouter ça à ma note");
					Administration.currentBar.clients.get(indexClient).offrirUnVerre(indexClient, indexServeur);
				}
				break;
			case 1:
				System.out.println("<" + Administration.currentBar.clients.get(indexClient).getPrenom() + "> Vous voulez dinner avec moi ce soir?");
				if(Administration.currentBar.clients.get(indexClient).getCoteDePopularite() < 25)
				{
					System.out.println("<" + Administration.currentBar.serveur.get(indexServeur).getPrenom() + "> C'est impossible Monsieur!");
				}
				else if(Administration.currentBar.clients.get(indexClient).getCoteDePopularite() > 25 && Administration.currentBar.clients.get(indexClient).getDegreAlcoolemie() >= 0.5)
				{
					System.out.println("<" + Administration.currentBar.serveur.get(indexServeur).getPrenom() + "> Peut-être une autre fois quand vous aurez un peu moins bu d'accord? Vous n'êtes pas en état de conduire");
				}
				else if(Administration.currentBar.clients.get(indexClient).getCoteDePopularite() > 25 && Administration.currentBar.clients.get(indexClient).getDegreAlcoolemie() < 0.5)
				{
					if(!((ServeurFemme)Administration.currentBar.serveur.get(indexServeur)).isInviteeADinner())
					{
						System.out.println("<" + Administration.currentBar.serveur.get(indexServeur).getPrenom() + "> Hoo Monsieur, c'est avec joie que j'accpte votre invitation");
						((ClientHomme)Administration.currentBar.clients.get(indexClient)).setArreteDeBoire(true);
					}
					else
					{
						System.out.println("<" + Administration.currentBar.serveur.get(indexServeur).getPrenom() + "> Hoo, je suis désolé Monsieur, mais je vais déjà dinner avec quelqu un ce soir. Une prochaine fois peut-être");
						System.out.println("<" + Administration.currentBar.clients.get(indexClient).getPrenom() + "> D'accord. Avec joie");
					}		
				}
				break;
		}
	}


	@Override  //Humains
	public void offirUneTournee(int indexClient) 
	{
		// TODO Auto-generated method stub
	}
	
	@Override // Clients
	/**
	 * Permet à un client homme d'offrir une tournée générale à tout le bar.
	 * @author Guillaume
	 * @param indexClient
	 */
	public void offrirUneTournee(int indexClient) 
	{
		Integer boissonPatronne = new Integer(Administration.rechercheBoissonPatronne());
		Integer eau = new Integer(Administration.rechercheIndexEau());
		Integer boissonSansAlcool = new Integer(Administration.selectionBoissonSansAlcool());   
		Double prix = new Double(0);
		
		System.out.println("<" + Administration.currentBar.clients.get(indexClient).getPrenom() + "> C'est mon Anniversaire! Je paye ma tournée.  Buvons les amis et à la vôtre!!!");
		Administration.currentBar.getBarman().servirUnVerre(boissonPatronne);
		prix += Administration.currentBar.mesBoissons.get(boissonPatronne).getPrixVenteVerre();
		Administration.currentBar.getBarman().servirUnVerre(boissonSansAlcool);
		prix += Administration.currentBar.mesBoissons.get(boissonSansAlcool).getPrixVenteVerre();
		
		for (int i=0; i<Administration.currentBar.serveur.size(); i++)
		{
			Administration.currentBar.getBarman().servirUnVerre(eau);
			prix += Administration.currentBar.mesBoissons.get(eau).getPrixVenteVerre();
			Administration.currentBar.serveur.get(i).boireDeLeau();
		}
		
		for (int i = 0; i<Administration.currentBar.clients.size(); i++)
		{
			for( int j=0; j<Administration.currentBar.mesBoissons.size(); j++)
			{
				if(Administration.currentBar.mesBoissons.get(j).getNomBoisson().equalsIgnoreCase(Administration.currentBar.clients.get(i).getBoissonFavorite()))
				{
					if(Administration.currentBar.mesBoissons.get(j).getStocks() == 0)
					{
						j = Administration.currentBar.clients.get(i).changerBoisson(i);
					}
					Administration.currentBar.clients.get(i).commander(j, i);
					Administration.currentBar.getBarman().servirUnVerre(j);
					prix += Administration.currentBar.mesBoissons.get(j).getPrixVenteVerre();
					Administration.currentBar.clients.get(i).boire(j);
					Administration.currentBar.clients.get(i).setCoteDePopularite(Administration.currentBar.clients.get(i).getCoteDePopularite() + 1);
					break;
				}
			}
		}
		System.out.println("<" + Administration.currentBar.getBarman().getPrenom() + "> Ce la vous fera " + prix + "€");
		Administration.currentBar.clients.get(indexClient).payer(prix, indexClient);
		Administration.currentBar.getBarman().gestionDeLaCaisse(prix);
		Administration.currentBar.getPatronne().boire(boissonPatronne);
		Administration.currentBar.getBarman().boire();
		Administration.currentBar.getBarman().setCoteDePopularite(Administration.currentBar.getBarman().getCoteDePopularite() + 1);
		// TODO Auto-generated method stub	
	}
}
